package org.example;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;

import java.io.IOException;

public class HBaseConnection {

    // 声明一个连接

    public static Connection connection = null;

    static {
        try {
            // 采取本地resource 下的hbase-site.xml的形式
            connection = ConnectionFactory.createConnection();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void close() throws IOException {

        if(null!=connection){
            connection.close();
        }

    }

    public static void main(String[] args) throws IOException {
        // 单例模式。单线程模式

            // 不推荐在主线程中创建
//        connection1();
        // 在静态代码块使用单例模式创建
        System.out.println(connection);
        // 记得关闭连接
        close();
    }

    public static Configuration configuration(){
        // 配置对象
        Configuration conf = new Configuration();
        // hbase 使用 zookeeper 来实现配置的，这个配置
        // 是个写在hbase-site.xml的zk配置
        conf.set("hbase.zookeeper.quorum",
                "hadoop102,hadoop103,hadoop104");
        return conf;


    }

    private static void connection1() throws IOException {
        // 配置对象
        Configuration conf = new Configuration();
        // hbase 使用 zookeeper 来实现配置的，这个配置
        // 是个写在hbase-site.xml的zk配置
        conf.set("hbase.zookeeper.quorum",
                "hadoop102,hadoop103,hadoop104");
        // 创建连接，同步连接

        Connection connection = ConnectionFactory.
                createConnection(conf);

        // 异步连接(不推荐)
//        ConnectionFactory.createAsyncConnection(conf)

        // 使用连接
        System.out.println(connection);

        // 关闭连接
        connection.close();
    }
}
